<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        function Person(name, age) {
            this.name = name;
            this.age = age;
            return 1
        }
        Person.prototype.do = function () {
            console.log("学习 react")
        }
        //手写new的函数
        function myNew(constr, ...arg) {
            //1.创建一个对象
            const obj = {};
            //2.调用构造函数把构造函数的this指向我们创建的对象
            const re = constr.apply(obj, arg)
            //3.把obj的隐式原型指向构造函数的原型对象
            obj.__proto__ = constr.prototype;
            //4.返回值(判断构造函数的返回值是基本类型还是引用类型)
            if (typeof re === 'object' && re !== null || typeof re === "function") {
                return re;
            } else {
                return obj
            }
        }
        const p1 = myNew(Person, "laowang", 18)
        console.log(p1, "p1");

        
    </script>
</body>

</html>